home *** CD-ROM | disk | FTP | other *** search
/ X User Tools / X User Tools (O'Reilly and Associates)(1994).ISO / sun4c / archive / tcltk.z / tcltk / man / catn / switch.n < prev    next >
Text File  |  1994-09-20  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. switch(n)             Tcl Built-In Commands                   7.0
  5.  
  6.  
  7.  
  8. _________________________________________________________________
  9.  
  10. NAME
  11.      switch - Evaluate one of several  scripts,  depending  on  a
  12.      given value
  13.  
  14. SYNOPSIS
  15.      switch ?_o_p_t_i_o_n_s? _s_t_r_i_n_g _p_a_t_t_e_r_n _b_o_d_y ?_p_a_t_t_e_r_n _b_o_d_y ...?
  16.      switch ?_o_p_t_i_o_n_s? _s_t_r_i_n_g {_p_a_t_t_e_r_n _b_o_d_y ?_p_a_t_t_e_r_n _b_o_d_y ...?}
  17. _________________________________________________________________
  18.  
  19.  
  20. DESCRIPTION
  21.      The switch command matches its _s_t_r_i_n_g argument against  each
  22.      of  the  _p_a_t_t_e_r_n  arguments in order.  As soon as it finds a
  23.      _p_a_t_t_e_r_n that matches _s_t_r_i_n_g it evaluates the following  _b_o_d_y
  24.      argument  by  passing  it recursively to the Tcl interpreter
  25.      and returns the result of that evaluation.  If the last _p_a_t_-
  26.      _t_e_r_n  argument  is  default then it matches anything.  If no
  27.      _p_a_t_t_e_r_n argument matches _s_t_r_i_n_g and  no  default  is  given,
  28.      then the switch command returns an empty string.
  29.  
  30.      If the initial arguments to switch start with  -  then  they
  31.      are treated as options.  The following options are currently
  32.      supported:
  33.  
  34.      -exact    Use exact matching when comparing _s_t_r_i_n_g to a pat-
  35.                tern.  This is the default.
  36.  
  37.      -glob     When matching _s_t_r_i_n_g to the  patterns,  use  glob-
  38.                style  matching  (i.e.  the same as implemented by
  39.                the string match command).
  40.  
  41.      -regexp   When matching _s_t_r_i_n_g to the patterns, use  regular
  42.                expression  matching (i.e. the same as implemented
  43.                by the regexp command).
  44.  
  45.      --        Marks the end of options.  The argument  following
  46.                this  one  will  be  treated  as _s_t_r_i_n_g even if it
  47.                starts with a -.
  48.  
  49.      Two syntaxes are provided for the  _p_a_t_t_e_r_n  and  _b_o_d_y  argu-
  50.      ments.   The  first uses a separate argument for each of the
  51.      patterns and commands; this form is convenient if  substitu-
  52.      tions  are desired on some of the patterns or commands.  The
  53.      second form places all of the patterns and commands together
  54.      into  a  single argument; the argument must have proper list
  55.      structure, with the elements of the list being the  patterns
  56.      and  commands.   The  second form makes it easy to construct
  57.      multi-line switch commands,  since  the  braces  around  the
  58.      whole list make it unnecessary to include a backslash at the
  59.      end of each line.  Since the _p_a_t_t_e_r_n arguments are in braces
  60.  
  61.  
  62.  
  63. Tcl                                                             1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. switch(n)             Tcl Built-In Commands                   7.0
  71.  
  72.  
  73.  
  74.      in the second form, no command or variable substitutions are
  75.      performed on them;  this makes the behavior  of  the  second
  76.      form different than the first form in some cases.
  77.  
  78.      If a _b_o_d_y is specified as ``-'' it means that the  _b_o_d_y  for
  79.      the  next  pattern  should also be used as the body for this
  80.      pattern (if the next pattern also has a body of  ``-''  then
  81.      the body after that is used, and so on).  This feature makes
  82.      it possible to share a single _b_o_d_y among several patterns.
  83.  
  84.      Below are some examples of switch commands:
  85.  
  86.           switch abc a - b {format 1} abc {format 2} default {format 3}
  87.  
  88.      will return 2,
  89.  
  90.           switch -regexp aaab {
  91.             ^a.*b$ -
  92.             b {format 1}
  93.             a* {format 2}
  94.             default {format 3}
  95.           }
  96.      will return 1, and
  97.  
  98.           switch xyz {
  99.             a
  100.               -
  101.             b
  102.               {format 1}
  103.             a*
  104.               {format 2}
  105.             default
  106.               {format 3}
  107.           }
  108.  
  109.      will return 3.
  110.  
  111.  
  112. KEYWORDS
  113.      switch, match, regular expression
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129. Tcl                                                             2
  130.  
  131.  
  132.  
  133.